//
//  DateUtil.m
//  OneCard
//
//  Created by sally on 16/2/17.
//  Copyright © 2016年 koalac. All rights reserved.
//

#import "DateUtil.h"

@implementation DateUtil

/**
 *  格式化发布时间
 *
 *  @param pubTime 时间戳
 *
 *  @return 格式化后的时间
 */
+ (NSString *)getFormatPubTime:(NSNumber *)pubTime {
  // 格式取出的字符串，获取时间对象
  NSDate *formatPubTime = [NSDate dateWithTimeIntervalSince1970:[pubTime integerValue]];

  // 时间格式化成指定字符串格式
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  dateFormatter.dateFormat = @"M月d日 HH:mm";

  // 获取当前时间值
  NSTimeInterval nowTime = [[NSDate date] timeIntervalSince1970];

  // 与当前时间的间隔
  NSInteger interval = nowTime - [pubTime integerValue];

  // 1: 超过1小时
  if (interval >= 3600) {
    NSInteger intervalType = [self getTimeIntervalType:[pubTime integerValue]];
    switch (intervalType) {
      // 今天
      case 0: {
        dateFormatter.dateFormat = @"HH:mm";
        break;
      }
      // 昨天
      case -1: {
        dateFormatter.dateFormat = @"昨天 HH:mm";
        break;
      }
      // 前天
      case -2: {
        dateFormatter.dateFormat = @"前天 HH:mm";
        break;
      }

      default:
        break;
    }

    return [dateFormatter stringFromDate:formatPubTime];
  }
  // 2: 1分钟以下，1小时以下
  else if (interval < 3600 && interval >= 60) {
    NSTimeInterval minute = interval / 60; // 时间单位换算成 分
    return [NSString stringWithFormat:@"%.f分钟前", minute];
  }
  // 3: 1分钟以内
  else {
    return @"刚刚";
  }
}

+ (NSString *)getFormatTime:(long long)milliSecond {
  NSString *time = [NSString stringWithFormat:@"%lld", milliSecond/1000];
  return [self getFormatPubTime:time];
}

/**
 *  获取时间间隔类型
 *
 *  @param time 时间
 *
 *  @return 0:今天, -1:昨天, -2:前天, -3:前天以前
 */
+ (NSInteger)getTimeIntervalType:(NSInteger)time {
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  dateFormatter.dateFormat = @"yyyy-MM-dd 00:00:00";

  NSString *todayZeroTimeStr = [dateFormatter stringFromDate:[NSDate date]];
  NSInteger todayZeroTime = [[dateFormatter dateFromString:todayZeroTimeStr] timeIntervalSince1970];
  // 今天
  if (time - todayZeroTime > 0) {
    return 0;
  }
  // 昨天
  else if (todayZeroTime - time > 0 && todayZeroTime - time <= 24 * 60 * 60) {
    return -1;
  }
  // 前天
  else if (todayZeroTime - time > 24 * 60 * 60 && todayZeroTime - time <= 24 * 60 * 60 * 2) {
    return -2;
  }
  return -3;
}

+ (NSString *)getFormatDate:(NSInteger)pubTime {
  NSDate *formatPubTime = [NSDate dateWithTimeIntervalSince1970:pubTime/1000];
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
  return [dateFormatter stringFromDate:formatPubTime];
}

@end
